<?php
if(!is_multisite() || !(defined('MULTISITE') && MULTISITE)) return;

/**
* 本函数用以返回wordpress多站点下获取全部站点的最新发布的文章，
* 返回结果是一个数组，包括了post的所有字段，外加一个blog_id字段，利用这个字段，我们可以利用http://codex.wordpress.org/Category:WPMU_Functions 的函数进行文章相关信息的调用
*/

function get_mu_last_posts($num = 10){
	global $wpdb,$table_prefix;
	$sql = '';
	$mu_last_posts = array();
	$blog_post_tables = array();

	$blogs = $wpdb->get_results("SELECT * FROM $wpdb->blogs WHERE public=1",ARRAY_A);
	//从blogs表中获取目前已经成功发布的博客信息
	foreach($blogs as $blog){
		//根据从blogs表中获取的信息，得到所有的博客文章数据表名，将表名存放在$blog_post_tables数组中
		$blog_id = $blog['blog_id'];
		if($blog_id == 1)
			//由于第一个博客数据表wp_posts中间没有数字，所以需要做排除
			$blog_post_table[$blog_id] = $table_prefix.'posts';
		else $blog_post_table[$blog_id] = $table_prefix.$blog['blog_id'].'_posts';
		//从$blog_post_tables数组中的表中进行下面的查询，由于这是在循环中，把整个数据库的各个posts表都查遍了
		$sql = "
			SELECT * FROM $blog_post_table[$blog_id] 
			WHERE post_type = 'post' 
			AND post_status = 'publish' 
			ORDER BY post_date DESC 
			LIMIT 0,$num
		";
		$last_posts_in_blog[$blog_id] = $wpdb->get_results($sql,ARRAY_A);
		//将查询的文章保存在$last_posts_in_blog数组中，这是一个三维数组，键值分别是[博客ID,该博客下对应的序列数,文章的字段]
	}
	foreach($last_posts_in_blog as $blog_id => $last_posts){
		foreach($last_posts as $last_post){
			//将上面得到的三维文章数组转化为一维数组
			//将博客的ID放在增加的一个blog_id字段中，可以用get_blog_permalink($blog_id, $post_id)获取文章链接
			$last_post['blog_id'] = $blog_id;
			$mu_last_posts[] = $last_post;
		}
	}

	//下面使用冒泡法处理上面得到一个按照时间排序的数组，同时用到本函数中的$num限制要得到的文章条数
	$tmp_mu_last_posts = array();
	for($i = 0;$i < count($mu_last_posts);$i ++){
		if($i >= $num){	//去除大于规定数字的元素
			unset($mu_last_posts[$i]);
			continue;
		}
		for($j = 0;$j < count($mu_last_posts);$j ++){
		//冒泡法排序
			if($mu_last_posts[$i]['post_date'] > $mu_last_posts[$j]['post_date']){
				$tmp_mu_last_posts = $mu_last_posts[$i];
				$mu_last_posts[$i] = $mu_last_posts[$j];
				$mu_last_posts[$j] = $tmp_mu_last_posts;
			}
		}
	}

	return $mu_last_posts;
}

function the_mu_last_posts($num = 10,$style = 'post'){
	$mu_last_posts = get_mu_last_posts($num);
	foreach($mu_last_posts as $mu_last_post){
?>
<h1><?php interpret('最新发布'); ?></h1>
<?php if($style == 'post'){} ?>
<?php if($style == 'list'){ ?>
<ul>
	<li><a href="<?php echo get_blog_permalink($mu_last_post['blog_id'],$mu_last_post['ID']); ?>"><?php $mu_last_post['title']; ?></a></li>
</ul>
<?php }// end of if[list] ?>
<?php
	} // end of foreach
}